package com.egao.wecanfly;


import com.egao.common.system.entity.User;
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.Template;
import org.beetl.core.resource.FileResourceLoader;
import org.beetl.core.resource.StringTemplateResourceLoader;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author : Doman
 * @version ：1.0
 * @date : 2019-11-12 10:56
 */
public class GeneratorforBeetl {

    public static void main(String[] args) throws Exception {
        GeneratorforBeetl gb = new GeneratorforBeetl();
        gb.BeetlString3();
    }
    public void BeetlString() throws Exception {
        //new一个模板资源加载器
        StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader();
        /* 使用Beetl默认的配置。
         * Beetl可以使用配置文件的方式去配置，但由于此处是直接上手的例子，
         * 我们不去管配置的问题，只需要基本的默认配置就可以了。
         */
        Configuration config = Configuration.defaultConfiguration();
        //Beetl的核心GroupTemplate
        GroupTemplate groupTemplate = new GroupTemplate(resourceLoader, config);
        //我们自定义的模板，其中${title}就Beetl默认的占位符
        String testTemplate="<html1111>\n" +
                "<head>\n" +
                "\t<title>${title}</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "\t<h1>${name}</h1>\n" +
                "</body>\n" +
                "</html>";
        Template template = groupTemplate.getTemplate(testTemplate);
        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "beetl");
        map.put("title","This is a test template Email.");
        template.binding(map);
        //渲染字符串
        String str = template.render();
        System.out.println(str);
    }

    public void BeetlString2() throws Exception {
        //new一个模板资源加载器
        StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader();
        /* 使用Beetl默认的配置。
         * Beetl可以使用配置文件的方式去配置，但由于此处是直接上手的例子，
         * 我们不去管配置的问题，只需要基本的默认配置就可以了。
         */
        Configuration config = Configuration.defaultConfiguration();
        //Beetl的核心GroupTemplate
        GroupTemplate groupTemplate = new GroupTemplate(resourceLoader, config);
        //我们自定义的模板，其中${title}就Beetl默认的占位符
        String testTemplate="<html>\n" +
                "<head>\n" +
                "\t<title>This is a test template Email.</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "\t<h1>beetl</h1>\n" +
                "<%" +
                " for(entry in map){" +
                "   print(entry.key+\":\"+entry.value);}%>"+
                "</body>\n" +
                "</html>";
        Template t = groupTemplate.getTemplate(testTemplate);
        Map<String,String> data=new HashMap<String,String>();
        data.put("test","213");
        data.put("aaa","123");
        //把map类型数据绑定到占位符map上，但在Beetl中使用循环时不需要用${}
        t.binding("map",data);
        String str = t.render();
        System.out.println(str);
    }
    public void BeetlString3() throws Exception {
        //new一个模板资源加载器
        /* 使用Beetl默认的配置。
         * Beetl可以使用配置文件的方式去配置，但由于此处是直接上手的例子，
         * 我们不去管配置的问题，只需要基本的默认配置就可以了。
         */
        //Beetl的核心GroupTemplate
        //我们自定义的模板，其中${title}就Beetl默认的占位符
        String root = System.getProperty("user.dir")
                + File.separator+"src"+ File.separator+"test"
                + File.separator+"java"+ File.separator+"com"
                + File.separator+"wf"+ File.separator+"ew"
                + File.separator+"wecanfly"+ File.separator+"template";
        FileResourceLoader resourceLoader = new FileResourceLoader(root,"utf-8");
        Configuration cfg = Configuration.defaultConfiguration();
        GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
        Template t = gt.getTemplate("/a.txt");
        Map<String,String> data=new HashMap<String,String>();
        data.put("title","213");
        data.put("h","123");
        //把map类型数据绑定到占位符map上，但在Beetl中使用循环时不需要用${}
        t.binding("map",data);
        List<User> list = new ArrayList<User>();
        User u1 = new User();
//        u1.setId("1");
//        u1.setName("u1");
//        User u2 = new User();
//        u2.setId("2");
//        u2.setName("u2");
//        list.add(u1);
//        list.add(u2);
        t.binding("list",list);
        String str = t.render();
        System.out.println(str);


    }
}
